package io.gitee.zhangbinhub.admin.resource.server.base

import cn.dev33.satoken.stp.StpUtil
import io.gitee.zhangbinhub.acp.boot.log.LogAdapter
import io.gitee.zhangbinhub.admin.common.base.BaseController

/**
 * @since JDK 11
 */
abstract class BaseResourceServerController(private val logAdapter: LogAdapter) : BaseController() {
    /**
     * 校验当前token是否具有指定的所有权限
     * @param authenticationList 待校验权限列表，权限列表为空则返回false
     */
    protected fun hasAuthentication(authenticationList: MutableList<String>): Boolean = authenticationList.let {
        if (it.isNotEmpty()) {
            it.forEach { authentication ->
                if (!StpUtil.hasPermission(authentication)) {
                    logAdapter.warn("当前用户【${StpUtil.getLoginId()}】没有权限【$authentication】")
                    return@let false
                }
            }
            true
        } else {
            logAdapter.warn("当前用户【${StpUtil.getLoginId()}】权限列表为空")
            false
        }
    }

}